草庐IT

Java Raw Type 和泛型交互

全部标签

c# - Visual Studio 2015 Intellisense 无法确定某些泛型方法中的 lambda 类型

注意:这是Roslyn中的错误,已在VisualStudio2017中修复。VisualStudio2015无法确定Enumerable.Join等方法中lambda参数的类型.考虑以下代码:publicclassBook{publicintAuthorId{get;set;}publicstringTitle{get;set;}}publicclassAuthor{publicintId{get;set;}publicstringName{get;set;}}publicstaticvoidNoIntellisenseInEnumerableJoin(){IEnumerableboo

c# - C#泛型是如何实现的?

我曾认为C#中的泛型的实现方式是在运行时或编译时生成新的类/方法/你有什么,当使用新的泛型类型时,类似于C++模板(我从未真正研究过,我很可能是错的,对此我很乐意接受更正)。但是在我的编码中我想出了一个确切的反例:staticclassProgram{staticvoidMain(){TesttestVar=newTest();GenericTestgenericTest=newGenericTest();intgen=genericTest.Get(testVar);RegularTestregTest=newRegularTest();intreg=regTest.Get(test

c# - 为什么不在用作泛型类型参数的类上调用静态构造函数?

给定以下类:publicclassFoo{staticFoo(){Console.WriteLine("Fooisbeingconstructed");}}publicclassBar{publicvoidReferenceFooAsGenericTypeParameter(){Console.WriteLine("Fooisbeingreferencedasagenerictypeparameter");}}publicclassSampleClass{publicstaticvoidMain(){newBar().ReferenceFooAsGenericTypeParameter

c# - 为什么泛型类型推断在那种情况下不起作用?

当尝试在LINQPad中编译以下代码时:voidMain(){DriveInfo.GetDrives().Select(GetProviderName).Dump();}staticstringGetProviderName(DriveInfodrive){//someirrelevantWMIcode...}我收到以下错误:Thetypeargumentsformethod'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'cannotbeinferredfromtheu

c# - XML反序列化泛型方法

我有下一个XML文件:d639a54f-baca-11e1-8067-001fd09b1dfd-24145e3b3b4cd-bb8e-11e1-8067-001fd09b1dfd0.28我将它反序列化为这个类:[XmlRoot("Root",IsNullable=false)]publicclassDocBalanceCollection{[XmlElement("Document")]publicListDocsBalanceItems=newList();}DocBalanceItem是:publicclassDocBalanceItem{[XmlElement("Id")]pub

c# - 检查对象是否为 C# 中的非特定泛型类型

假设我有以下类(class):publicclassGeneral{}我想知道一个对象是否属于那种类型。我知道我可以使用反射来确定对象是否属于Type.GetGenericTypeDefinition的泛型类型,但我想避免这种情况。是否可以做类似objisGeneral的事情?,或obj.GetType().IsAssignableFrom(typeof(General))?我很惊讶我找不到类似的问题,尽管我可能在搜索中使用了错误的关键字。 最佳答案 你可以这样做:varobj=newGeneral();vartype=obj.Ge

c# - 在同一解决方案中的 C# 项目和 C++ 项目之间进行交互

我有一个用C++/cli编写的Windows窗体应用程序。我想用一些新的形式扩展这个应用程序,我想在一个单独的项目中用C#创建它们。是否可以简单地将C#项目添加到具有C++项目的解决方案中,并且两者将交互?通过交互,我的意思是说,在c#项目中编写的表单上单击一个按钮将能够调用c++项目中的方法。也许换种方式问,C#项目中的对象是否可以引用c++项目中的对象?如果是这样,您是否知道可以帮助我入门的示例代码?谢谢。 最佳答案 是的。C++/CLI应用程序将能够通过以下两种方式之一与C#应用程序交互:如果您使用的是CLI扩展(从您的帖子来

c# - 无法使用动态参数和泛型调用扩展方法

我很好奇是否有其他人遇到过同样的问题...我在一个项目的ORM上使用Dapper,并从IDbConnection创建了一些我自己的扩展方法。为了简化代码,我遇到了(我发现的)令人费解的错误。我将详细介绍我所经历的过程。首先,我在一个名为DbExtensions的静态类中向我的项目添加了一个扩展方法。像这样:usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;publicstaticclassDbExtensions{publicstaticTScalar(thisIDbConnectioncnn,strin

C# Generic 泛型(一个严肃的问题)

在C#中,我尝试编写代码,在其中创建一个本身是通用的Func委托(delegate)。例如,以下(非通用)委托(delegate)返回任意字符串:FuncgetString=()=>"Hello!";另一方面,我想创建一个与泛型方法类似的泛型。例如,如果我希望泛型Func为类型T返回default(T)。我会想象我编写的代码如下:FuncgetDefaultObject=()=>default(T);然后我会用它作为getDefaultObject()这将返回null如果我要写getDefaultObject()将返回0。这个问题不仅仅是一个学术练习。我找到了很多可以使用它的地方,但我

c# - 如何编写嵌套泛型函数

我正在尝试编写一个通用的堆排序算法。我收到以下错误。可能是什么原因?ThetypeTcannotbeusedastypeparameterTinthegenerictypeormethodHeap.MainClass.MaxHeapify(T[],int,int).ThereisnoboxingortypeparameterconversionfromTtoSystem.IComparable(CS0314)(HeapSort) 最佳答案 您需要指定T必须实现的相同通用约束IComparable在HeapSort上功能以及:priv